/*
数据表记录包含表索引和数值，请对表索引相同的记录进行合并，即将相同索引的数值进行求和运算，输出按照key值升序进行输出。
输入描述:
先输入键值对的个数
然后输入成对的index和value值，以空格隔开
输出描述:
输出合并后的键值对（多行）
*/

#include <iostream>
#include <map>
using namespace std;

int main()
{
    int n;
    while(cin>>n)
    {
        map<int,int> m;

        while(n--){
            int k,v;
            cin>>k>>v;
            if(m[k])m[k]+=v;
            else
                m[k]=v;
        }
        for(map<int,int>::iterator cnt=m.begin();cnt!=m.end();++cnt){
            cout<<cnt->first<<" "<<cnt->second<<endl;
        }
    }

    return 0;
}
